package com.zenith.middleware.service;

import com.zenith.common.result.Result;
import com.zenith.common.result.PageResult;
import com.zenith.middleware.po.dto.article.*;
import com.zenith.middleware.po.vo.article.*;

import java.util.List;

/**
 * 文章服务接口
 */
public interface ArticleService {
    
    // =========================== 文章管理相关接口 ===========================
    
    /**
     * 分页查询文章
     */
    Result<PageResult<ArtArticleVO>> getArtArticlePage(ArtArticleDTO query);
    
    /**
     * 创建文章
     */
    Result<Boolean> createArtArticle(ArtArticleDTO articleDTO);

    /**
     * 更新文章
     */
    Result<Boolean> updateArtArticle(ArtArticleDTO articleDTO);

    /**
     * 删除文章
     */
    Result<Boolean> deleteArtArticle(Long id);

    /**
     * 发布文章
     */
    Result<Boolean> publishArtArticle(Long id);

    /**
     * 获取文章详情
     */
    Result<ArtArticleDTO> getArtArticleDetail(Long id);

    // =========================== 文章分类相关接口 ===========================

    /**
     * 分页查询文章分类
     */
    Result<PageResult<ArtCategoryVO>> getArtCategoryPage(ArtCategoryDTO query);

    /**
     * 获取分类树结构
     */
    Result<ArtCategoryVO> getArtCategoryTree();

    /**
     * 创建文章分类
     */
    Result<Boolean> createArtCategory(ArtCategoryDTO categoryDTO);

    /**
     * 更新文章分类
     */
    Result<Boolean> updateArtCategory(ArtCategoryDTO categoryDTO);

    /**
     * 删除文章分类
     */
    Result<Boolean> deleteArtCategory(Long id);

    // =========================== 文章评论相关接口 ===========================

    /**
     * 创建文章评论
     */
    Result<Boolean> createArtComment(ArtCommentDTO comment);

    /**
     * 删除文章评论
     */
    Result<Boolean> deleteArtComment(Long id);

    // =========================== 文章互动相关接口 ===========================

    /**
     * 创建文章互动（点赞、收藏、分享等）
     */
    Result<Boolean> createArtInteraction(ArtInteractionDTO interaction);

    /**
     * 删除文章互动
     */
    Result<Boolean> deleteArtInteraction(Long id);

    // =========================== 文章标签相关接口 ===========================

    /**
     * 分页查询文章标签
     */
    Result<PageResult<ArtTagVO>> getArtTagPage(ArtTagDTO query);

    /**
     * 创建文章标签
     */
    Result<Boolean> createArtTag(ArtTagDTO tagDTO);

    /**
     * 更新文章标签
     */
    Result<Boolean> updateArtTag(ArtTagDTO tagDTO);

    /**
     * 删除文章标签
     */
    Result<Boolean> deleteArtTag(Long id);

    // =========================== 文章专题相关接口 ===========================

    /**
     * 分页查询文章专题
     */
    Result<PageResult<ArtTopicVO>> getArtTopicPage(ArtTopicDTO query);

    /**
     * 创建文章专题
     */
    Result<Boolean> createArtTopic(ArtTopicDTO topicDTO);

    /**
     * 更新文章专题
     */
    Result<Boolean> updateArtTopic(ArtTopicDTO topicDTO);

    /**
     * 删除文章专题
     */
    Result<Boolean> deleteArtTopic(Long id);
}